package org.niit.dao

import org.apache.spark.sql.DataFrame
import org.niit.common.TDao
import org.niit.bean.AdClickData
import org.niit.util.JDBCUtil

class BlackListDao extends TDao{

  //根据id查询黑名单用户
  override def selectBlackUserById(userid: String): Boolean = {
    //1.获得MySQL连接
    val conn = JDBCUtil.getConnection
    //2.编写并执行MySQL语句，以及传递参数
    val bool = JDBCUtil.isExist(conn,
      """
        |SELECT
        |   *
        |FROM
        |   black_list
        |WHERE
        |   userid = ?
        |""".stripMargin,Array(userid))
    //3.关闭连接
    conn.close()
    //4.返回值
    bool
  }
  //向黑名单中添加数据，如果该数据存在,就更新id
  override def insertBlackList(userid: String): Unit = {
    //1.获得MySQL连接
    val conn = JDBCUtil.getConnection
    //2.编写并执行MySQL语句，以及传递参数
    JDBCUtil.executeUpdate(conn,
      """
        |INSERT INTO
        |     black_list (userid)
        |VALUES
        |      (?)
        |ON DUPLICATE KEY UPDATE
        |     userid = ?
        |""".stripMargin,Array(userid,userid))
    /*
    ON DUPLICATE KEY UPDATE  如果该userid = 6 这条数据存在，则更新userid
     userid = ?
     */

    //3.关闭连接
    conn.close()
  }
  //向 某天某用户点击某个广告表 添加数据（日期，用户id，广告id，次数）。如果该数据存在则更新数据，不存在则添加
  override def insertUserAdCount(day:String, user:String, ad:String,count:Int ): Unit = {
    //1.获得MySQL连接
    val conn = JDBCUtil.getConnection
    //2.编写并执行MySQL语句，以及传递参数
    JDBCUtil.executeUpdate(conn,
      """
        |INSERT INTO
        |     user_ad_count (dt,userid,adid,count)
        |VALUES
        |     (?,?,?,?)
        |ON DUPLICATE KEY UPDATE
        |     count = count + ?
        |""".stripMargin,Array(day,user,ad,count,count))
    /*
    ON DUPLICATE KEY UPDATE  如果该 （2023-4-3 张三 加多宝 1）存在，则更新点击次数(count)
      count = count + ?
     */
    //3.关闭连接
    conn.close()
  }
  //查看用户的点击广告次数 是否 超过规定次数
  def checkUserByCount(day:String,user:String,ad:String,count:Int):Boolean={
    //1.获得MySQL连接
    val conn = JDBCUtil.getConnection
    //2.编写并执行MySQL语句，以及传递参数
    val bool = JDBCUtil.isExist(conn,
      """
        |SELECT
        |     *
        |FROM
        |     user_ad_count
        |WHERE
        |     dt = ? AND userid = ? AND adid = ? AND count >= ?
        |""".stripMargin,Array(day,user,ad,count))   // ?：表示数据占位符
    //3.关闭连接
    conn.close()
    //4.返回值
    bool
  }
}
